public class L19 {
    public static void main(String[] args) {
//        ListNode listNode1 = new ListNode(1, null);
//        ListNode listNode2 = new ListNode(2, listNode1);
//        ListNode listNode3 = new ListNode(3, listNode2);
//        ListNode listNode4 = new ListNode(4, listNode3);
//
//        new Solution().removeNthFromEnd(listNode4, 2);


        ListNode listNode4 = new ListNode(1, null);

        new Solution().removeNthFromEnd(listNode4, 1);
    }


    static class Solution {
        public ListNode removeNthFromEnd(ListNode head, int n) {

            ListNode listNode = new ListNode(-1, head);
            ListNode fast = listNode;
            ListNode slow = listNode;

            for (int i = 0; i <= n; i++) {
                fast = fast.next;
            }

            while (fast != null) {
                fast = fast.next;
                slow = slow.next;
            }

            if (slow.next != null) {
                slow.next = slow.next.next;
            }

            return listNode.next;
        }
    }
}
